package org.seedltd.upms.service.sys;

import java.util.List;

import org.seedltd.core.base.IBaseService;
import org.seedltd.upms.model.sys.common.SelectTreeVO;
import org.seedltd.upms.model.sys.entity.SysDept;
import org.seedltd.upms.model.sys.form.SysDeptForm;
import org.seedltd.upms.model.sys.form.SysDeptSearchForm;
import org.seedltd.upms.model.sys.vo.SysDeptVO;

/**
 * 部门管理业务接口
 *
 * @author laizuan
 * @version 1.0
 * @since 2021/07/19
 */
public interface SysDeptService extends IBaseService<SysDept> {

    /**
     * 通过主键获取数据
     *
     * @param id
     *            主键
     * @return 数据
     */
    SysDeptVO findById(Long id);

    /**
     * 通过部门代码获取部门对象
     * 
     * @param deptCode
     *            部门代码
     * @return
     */
    SysDept findByDeptCode(String deptCode);

    /**
     * 新增数据
     *
     * @param form
     *            表单数据
     * @return 主键
     */
    Long add(SysDeptForm form);

    /**
     * 修改数据
     *
     * @param form
     *            表单数据
     * @return 是否修改成功。 true: 成功，false:失败
     */
    boolean update(SysDeptForm form);

    /**
     * 删除数据
     *
     * @param id
     *            主键
     * @return 是否删除成功。 true: 成功，false:失败
     */
    boolean delete(Long id);

    /**
     * 列表查询
     *
     * @param searchForm
     *            搜索条件
     * @return 列表数据
     */
    List<SysDeptVO> list(SysDeptSearchForm searchForm);

    /**
     * 查询下拉列表树形部门数据
     * 
     * @return
     */
    List<SelectTreeVO> listSelectTreeDept();
}